{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1. 简述混合高斯模型的基本原理，以及通过混合高斯模型进行背景建模的基本思想。 \n",
    "\n",
    "   在使用背景提取的方式进行运动估计时。图像中的每一个像素点的随着时间灰度变化可以近似的看作服从正态分布：\n",
    "\n",
    "   $$N(\\mu,\\sigma^2)$$\n",
    "   \n",
    "   以此我们给定阈值：\n",
    "   \n",
    "   $$T = 3\\sigma$$\n",
    "   \n",
    "   当在某一时刻图像中的像素点偏移其高斯分布过大时就可以认为该像素是一个前景像素：\n",
    "   \n",
    "   $$I(x,y,t) > 3\\sigma$$\n",
    "   \n",
    "   这样就可以把前景与背景分离开进行前景目标的运动估计。\n",
    "   \n",
    "   往往现实中像素随时间的变化不能简单的看成单个的高斯分布，但是任何一种分布我们都可以用多个高斯分布的线性组合去逼近它，这就是混合高斯模型的基本原理，其数学表达如下：\n",
    "   \n",
    "   $$p(I) = \\sum_{q=0}^{Q}w_qN(I;\\mu_q,\\sigma_q^2)$$\n",
    "   \n",
    "   其中Q代表总的高斯分量个数，q代表第q个高斯分量，$w_q$代表这个高斯分量的权重\n",
    "   \n",
    "   通过模型学习的方式我们可以计算每个像素点的分布情况： $w_q，\\mu_q，\\sigma_q$\n",
    "   \n",
    "   建模过程如下：\n",
    "   \n",
    "   （1）模型初始化，将第一帧的每一个像素灰度最为初始均值，再赋予一个较大的均值$\\sigma$，此时Q = 1，w = 1.0;\n",
    "   \n",
    "   （2）模型学习，将当前帧的对应点象素的灰度值与已有的Q个高斯模型作比较，若该像素落在已有的一个高斯分布（第q个）的$\\sigma$之内，就根据当前灰度值调整第q个高斯分布的均值、方差和权重。否则就进入步骤（3）.\n",
    "   \n",
    "   （3）以（2）步骤中的像素初始化一个新的高斯分量。如果高斯分量个数没有到达上限，混合模型中增加该新的高斯分量。如果到达上限，则替换掉已有高斯分量权重最低的。\n",
    "   \n",
    "   （4）判断背景前景。将各个高斯分量按权重从大到小排序，设定一个权重和阈值，大于这个值的就是背景，小于阈值的就是前景。\n",
    "   \n",
    "   以上就是运动估计中混合高斯模型使用的基本过程。\n",
    "   \n",
    "   \n",
    "2. 解释光流计算中的恒定亮度假设，进一步简述L-K光流估计方法的基本原理。\n",
    "\n",
    "   光流估计有如下假设\n",
    "   \n",
    "   （1）物体的像素强度在相邻帧之间不变，即恒定亮度。这是符合实际的假设，在一帧之间的很短时间基本可认为物体的像素强度没有变化。\n",
    "   \n",
    "   （2）连续帧之间的物体位移比较微小，以保证后一帧可以用前一帧进行泰勒展开。\n",
    "   \n",
    "   （3）相邻的像素（一块子图像区域）具有相似的运动。\n",
    "   \n",
    "   基于(1)(2)假设可以的到光流估计的基本方程：\n",
    "   $$I_x\\nabla x + I_y\\nabla x = -I_t$$\n",
    "   \n",
    "   L-K方法根据假设（3），可以进一步拓展上述方程为：\n",
    "   $$\\left[\\begin{matrix}I_{x1} & I_{y1} \\cr I_{x2} & I_{y2} \\cr ... & ...\\end{matrix}\\right] \\left[\\begin{matrix}u \\cr v \\end{matrix}\\right] = -\\left[\\begin{matrix}I_{t1}\\cr I_{t2}\\cr ...\\end{matrix}\\right]$$\n",
    "   \n",
    "   进一步可以用最小二乘来求解u、v的值\n",
    "   \n",
    "   根据L-K的计算过程可以知道，这种方式只有在特征点区域才能得到比较好的结果，因为在这里矩阵的求逆是可信的。\n",
    "   \n",
    "   当假设（2）中相邻帧物体位移过大时，可以使用金字塔L-K方法作光流估计，具体过程如下：\n",
    "   \n",
    "   （1）对相邻两个图像上采样得到两个图像金字塔，确保了在金字塔顶端位移足够小\n",
    "   \n",
    "   （2）从金字塔的顶端开始运行L-K方法\n",
    "   \n",
    "   （3）在下一层校准，传播光流位移再进行L-K方法，并重复此步骤直到到达金字塔底端\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
